/*****************************************************************************/
/*                                                                           */
/*    Domino Operation System Driver Module                                  */
/*                                                                           */
/*    Copyright (C) 2007 Laszlo Arvai                                        */
/*                                                                           */
/*    ------------------------------------------------------------------     */
/*    drvRCServo.c - R/C Servo pulse generator driver                        */
/*****************************************************************************/
#ifndef __RCServo_h
#define __RCServo_h

///////////////////////////////////////////////////////////////////////////////
// Includes
#include <krnlTypes.h>
#include "drvIOConfig.h"

///////////////////////////////////////////////////////////////////////////////
// Costants
#define RCS_GROUP_CHANNEL_COUNT 8
#define RCS_MAX_VALUE 1000

#define RCS_MAX_PULSE	2000u
#define RCS_MIN_PULSE	1000u
#define RCS_PULSE_REPEAT_RATE 20000u

///////////////////////////////////////////////////////////////////////////////
// Types
struct _RCServoPinMappingEntry
{
	dosByte* PortAddress;
	dosByte BitMask;
};

typedef struct _RCServoPinMappingEntry RCServoPinMappingEntry;

///////////////////////////////////////////////////////////////////////////////
// Function Prototypes
void InitRCServo(void);
void drvRCSSetPosition( dosByte in_channel, dosWord in_value );
dosWord drvRCServoInterruptCallback1(void);
dosWord drvRCServoInterruptCallback2(void);
dosWord drvRCServoInterruptCallback3(void);

//////////////////////////////////////////////////////////////////////////////
// User definable (system specific) functions
void drvRCServoSetHigh( dosByte in_channel );
void drvRCServoSetLow( dosByte in_channel );

#endif
